package com.kaifamiao.object;

// 显式继承Object类并覆盖(或重写)其 toString 方法
public class Sinaean extends Object {

    private String fullName;
    private char gender;
    private int age;

    public String getName() {
        return fullName;
    }

    public void setName(String name) {
        this.fullName = name;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        // 检查参数值是否是我们期望的值
        if( gender == '男' || gender == '女' ) {
            this.gender = gender;
        }
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        // 对参数 age 进行检查
        if( age >= 0 && age <= 200 ) {
            this.age = age;
        }
    }

    // 当子类中重新定义了与从父类中继承的 同名、同参、同返回 的方法，
    // 则称子类中的方法 覆盖(或重写) 了从父类继承的同名方法
    @Override
    public String toString(){
        return "大家好，我是" + fullName + "，" + gender + "，今年" + age + "岁" ;
    }

    public static void main(String[] args) {
        Sinaean s = new Sinaean();
        s.setName( "李芳" );
        s.setGender( '女' );
        s.setAge( 18 );

        // 获得引用变量 s 所指向的堆区对象(实例)的字符串形式
        String desc = s.toString();
        System.out.println( desc );
    }
}
